﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace W40K_ArmyBuilder
{
    public partial class Form1 : Form
    {
        public TreeNode clickedNode = new TreeNode();
        public Form1()
        {
            InitializeComponent();          
        }

        private void TreeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            TreeNode node = new TreeNode();
            node = (TreeNode)e.Node.Clone();
            if(node.Name.Substring(0,2)!="AR")
            switch (node.Name.Substring(2,2))
            {
                case("SM"):
                    switch (node.Name.Substring(0, 2))
                    {
                        case ("HQ"):
                            if (TreeView2.Nodes["ARSM"] == null)
                                TreeView2.Nodes.Add("ARSM", "SpaceMarines");
                            if (TreeView2.Nodes["ARSM"].Nodes["HQSM"] == null)
                            {
                                TreeView2.Nodes["ARSM"].Nodes.Insert(1, "HQSM", "HQ");
                                if (node.Name != "HQSM")
                                    TreeView2.Nodes["ARSM"].Nodes["HQSM"].Nodes.Add(node);
                            }
                            else if (node.Name != "HQSM")
                                TreeView2.Nodes["ARSM"].Nodes["HQSM"].Nodes.Add(node);

                            break;
                        case ("TP"):
                            if (TreeView2.Nodes["ARSM"] == null)
                                TreeView2.Nodes.Add("ARSM", "SpaceMarines");
                            if (TreeView2.Nodes["ARSM"].Nodes["TPSM"] == null)
                            {
                                TreeView2.Nodes["ARSM"].Nodes.Insert(1, "TPSM", "Troops");
                                if (node.Name != "TPSM")
                                    TreeView2.Nodes["ARSM"].Nodes["TPSM"].Nodes.Add(node);
                            }
                            else if (node.Name != "TPSM")
                                TreeView2.Nodes["ARSM"].Nodes["TPSM"].Nodes.Add(node);

                            break;

                        case ("DT"):
                            if (TreeView2.Nodes["ARSM"] == null)
                                TreeView2.Nodes.Add("ARSM", "SpaceMarines");
                            if (TreeView2.Nodes["ARSM"].Nodes["DTSM"] == null)
                            {
                                TreeView2.Nodes["ARSM"].Nodes.Insert(1, "DTSM", "Dedicated Transports");
                                if (node.Name != "DTSM")
                                    TreeView2.Nodes["ARSM"].Nodes["DTSM"].Nodes.Add(node);
                            }
                            else if (node.Name != "DTSM")
                                TreeView2.Nodes["ARSM"].Nodes["DTSM"].Nodes.Add(node);

                            break;

                        case ("EL"):
                            if (TreeView2.Nodes["ARSM"] == null)
                                TreeView2.Nodes.Add("ARSM", "SpaceMarines");
                            if (TreeView2.Nodes["ARSM"].Nodes["ELSM"] == null)
                            {
                                TreeView2.Nodes["ARSM"].Nodes.Insert(1, "ELSM", "Dedicated Transports");
                                if (node.Name != "ELSM")
                                    TreeView2.Nodes["ARSM"].Nodes["ELSM"].Nodes.Add(node);
                            }
                            else if (node.Name != "ELSM")
                                TreeView2.Nodes["ARSM"].Nodes["ELSM"].Nodes.Add(node);

                            break;

                        case ("FA"):
                            if (TreeView2.Nodes["ARSM"] == null)
                                TreeView2.Nodes.Add("ARSM", "SpaceMarines");
                            if (TreeView2.Nodes["ARSM"].Nodes["FASM"] == null)
                            {
                                TreeView2.Nodes["ARSM"].Nodes.Insert(1, "FASM", "Dedicated Transports");
                                if (node.Name != "FASM")
                                    TreeView2.Nodes["ARSM"].Nodes["FASM"].Nodes.Add(node);
                            }
                            else if (node.Name != "FASM")
                                TreeView2.Nodes["ARSM"].Nodes["FASM"].Nodes.Add(node);

                            break;

                        case ("HS"):
                            if (TreeView2.Nodes["ARSM"] == null)
                                TreeView2.Nodes.Add("ARSM", "SpaceMarines");
                            if (TreeView2.Nodes["ARSM"].Nodes["HSSM"] == null)
                            {
                                TreeView2.Nodes["ARSM"].Nodes.Insert(1, "HSSM", "Dedicated Transports");
                                if (node.Name != "HSSM")
                                    TreeView2.Nodes["ARSM"].Nodes["HSSM"].Nodes.Add(node);
                            }
                            else if (node.Name != "HSSM")
                                TreeView2.Nodes["ARSM"].Nodes["HSSM"].Nodes.Add(node);

                            break;
                    } 
                break;

                case("CS"):
                switch (node.Name.Substring(0, 2))
                {                 
                    case ("HQ"):
                         if (TreeView2.Nodes["ARCS"] == null)
                            TreeView2.Nodes.Add("ARCS", "Chaos");
                         if (TreeView2.Nodes["ARCS"].Nodes["HQCS"] == null)
                        {
                            TreeView2.Nodes["ARCS"].Nodes.Insert(1, "HQCS", "HQ");
                            if (node.Name != "HQCS")
                                TreeView2.Nodes["ARCS"].Nodes["HQCS"].Nodes.Add(node);
                        }
                        else if (node.Name != "HQCS")
                            TreeView2.Nodes["ARCS"].Nodes["HQCS"].Nodes.Add(node);

                        break;
                    case ("TP"):
                        if (TreeView2.Nodes["ARCS"] == null)
                            TreeView2.Nodes.Add("ARCS", "Chaos");
                        if (TreeView2.Nodes["ARCS"].Nodes["TPCS"] == null)
                        {
                            TreeView2.Nodes["ARCS"].Nodes.Insert(1, "TPCS", "Troops");
                            if (node.Name != "TPCS")
                                TreeView2.Nodes["ARCS"].Nodes["TPCS"].Nodes.Add(node);
                        }
                        else if (node.Name != "TPCS")
                            TreeView2.Nodes["ARCS"].Nodes["TPCS"].Nodes.Add(node);

                        break;

                    case("DT"):
                        if (TreeView2.Nodes["ARCS"] == null)
                            TreeView2.Nodes.Add("ARCS", "Chaos");
                        if (TreeView2.Nodes["ARCS"].Nodes["DTCS"] == null)
                        {
                            TreeView2.Nodes["ARCS"].Nodes.Insert(1, "DTCS", "Dedicated Transports");
                            if (node.Name != "DTCS")
                                TreeView2.Nodes["ARCS"].Nodes["DTCS"].Nodes.Add(node);
                        }
                        else if (node.Name != "DTCS")
                            TreeView2.Nodes["ARCS"].Nodes["DTCS"].Nodes.Add(node);

                        break;

                    case("EL"):
                            if (TreeView2.Nodes["ARCS"] == null)
                            TreeView2.Nodes.Add("ARCS", "Chaos");
                        if (TreeView2.Nodes["ARCS"].Nodes["ELCS"] == null)
                        {
                            TreeView2.Nodes["ARCS"].Nodes.Insert(1, "ELCS", "Dedicated Transports");
                            if (node.Name != "ELCS")
                                TreeView2.Nodes["ARCS"].Nodes["ELCS"].Nodes.Add(node);
                        }
                        else if (node.Name != "ELCS")
                            TreeView2.Nodes["ARCS"].Nodes["ELCS"].Nodes.Add(node);

                        break;

                    case("FA"):
                             if (TreeView2.Nodes["ARCS"] == null)
                            TreeView2.Nodes.Add("ARCS", "Chaos");
                        if (TreeView2.Nodes["ARCS"].Nodes["FACS"] == null)
                        {
                            TreeView2.Nodes["ARCS"].Nodes.Insert(1, "FACS", "Dedicated Transports");
                            if (node.Name != "FACS")
                                TreeView2.Nodes["ARCS"].Nodes["FACS"].Nodes.Add(node);
                        }
                        else if (node.Name != "FACS")
                            TreeView2.Nodes["ARCS"].Nodes["FACS"].Nodes.Add(node);

                        break;

                    case("HS"):
                             if (TreeView2.Nodes["ARCS"] == null)
                            TreeView2.Nodes.Add("ARCS", "Chaos");
                        if (TreeView2.Nodes["ARCS"].Nodes["HSCS"] == null)
                        {
                            TreeView2.Nodes["ARCS"].Nodes.Insert(1, "HSCS", "Dedicated Transports");
                            if (node.Name != "HSCS")
                                TreeView2.Nodes["ARCS"].Nodes["HSCS"].Nodes.Add(node);
                        }
                        else if (node.Name != "HSCS")
                            TreeView2.Nodes["ARCS"].Nodes["HSCS"].Nodes.Add(node);

                        break;
                } 
                break;
            }
                         
           
        }

        private void cmdExport_Click(object sender, EventArgs e)
        {
            
        }

        private void TreeView2_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                this.TreeView2.SelectedNode = e.Node;
                contextMenuStrip1.Show(new Point(Cursor.Position.X, Cursor.Position.Y));
                clickedNode = e.Node;
            }
        }

        private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            if (e.ClickedItem == (contextMenuStrip1.Items["Remove"]))
            {
                clickedNode.Remove();
            }
        }

   
     }
}
